# 【练习】数据结构综合实战
# 元组练习
# 定义一个具有一个元素值为 A 的元组 t 。
# 现有元组 t = ("A", "B", "D", "E", "F", "K", "S", "T", "W", "O", "P", "Z")， 通过切片获取元素 K 至元素 W（包括） 之间的所有元素。
def tuble_practice():
    t = ("A")

    t2 = ("A", "B", "D", "E", "F", "K", "S", "T", "W", "O", "P", "Z")
    t3 = t2[5:9:1]
    return t3
print(tuble_practice())

# 列表练习
# 定义一个空列表 data
# 向 data 中追加元素 A, B, C。
# 将元组 ("A", "B", "C") 中的元素值添加到 data 中
# 向列表 data 中下标 3 位置插入元素 ("A", "B", "C")
# 统计列表 data 中值为 A 的元素个数并输出。
def lite_practice():
    data = []

    data.append("A")
    data.append("B")
    data.append("C")

    data.extend(("A", "B", "C"))

    data.insert(3, ("A", "B", "C"))

    print(data.count("A"))
lite_practice()

# 字典练习
# 现有班级 Python 中有三名学生，每名学生包含学号、姓名、年龄、性别、选课等信息，请定义字典进行描述。
# 添加一名新学生信息
# 修改第二名学生的性别为 female
# 删除第三名学生选课中的任意一门课程
# 给第一名学生添加地址信息
# 分别使用深拷贝方法和浅拷贝方法复制班级信息，然后修改班级信息中任意学生的课程信息，比较复制变量有何区别并说明。
import copy
def dict_practice():
    student = {"student":[
            {"id": 1, "name": "学生1", "age": 20, "gender": "male", "course": ["语文","数学"]},
            {"id": 2, "name": "学生2", "age": 21, "gender": "male", "course": ["物理", "化学"]},
            {"id": 3, "name": "学生3", "age": 19, "gender": "female", "course": ["生物", "英语"]}]
    }

    student["student"].append(
        {"id": 4, "name": "学生4", "age": 18, "gender": "female", "course": ["体育", "地理"]}
    )

    student["student"][1]["gender"] = "female"

    student["student"][2]["course"].remove("生物")

    student["student"][1]["address"] = "深圳"

    # 深拷贝
    student_deepcopy = copy.deepcopy(student)

    # 浅拷贝
    student_copy = copy.copy(student)

    student["student"][0]["course"].remove("语文")

    print(student)
    print(student_deepcopy)
    print(student_copy)
    print("深拷贝直接拷贝数据的数值，而浅拷贝只是拷贝了数据的表面，当数据发生变化时，浅拷贝也随着变化")

dict_practice()


